package cn.tedu.cart.service;

import cn.tedu.cart.mapper.CartMapper;
import com.jt.common.pojo.Cart;
import com.jt.common.pojo.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.web.client.RestTemplate;

import java.util.List;

@Service
public class CartService {
    @Autowired
    CartMapper cartMapper;

    @Autowired
    RestTemplate restTemplate;

    public List<Cart> queryMyCarts(String userId) {
        return cartMapper.selectCartsByUserId(userId);
    }

    /**
     * 新增购物车数据
     * @param cart
     */
    public void addCart(Cart cart) {
        // 看当前新增是新插入还是更新数量
        // 利用传递的参数 userId, productId num select exist from t_cart userId productId
        Cart existCart = cartMapper.selectExistByUIdAndProdId(cart);
        if (existCart == null) {
            // 当前要添加到购物车数据不存在
            // 从商品微服务中调用服务获取商品数据
            String url = "http://productservice/product/manage/item/" + cart.getProductId();
            Product product = restTemplate.getForObject(url, Product.class);
            // 开始封装cart完整信息
            cart.setProductName(product.getProductName());
            cart.setProductImage(product.getProductImgurl());
            cart.setProductPrice(product.getProductPrice());
            // 新增购物车数据
            cartMapper.insertCart(cart);
        } else {
            existCart.setNum(existCart.getNum() + cart.getNum());
            cartMapper.updateNumByUIdAndProdId(existCart);
        }
    }

    /**
     * 更新
     * @param cart
     */
    public void updateNum(Cart cart) {
        cartMapper.updateNumByUIdAndProdId(cart);
    }

    /**
     * 删除
     * @param cart
     */
    public void deleteCart(Cart cart) {
        cartMapper.deleteCartByUIdAndProdId(cart);
    }
}
